方法1:使用if-else比较
if(a>=b)
c = a;
else
c = b;
方法2:使用条件运算符比较
c = a>=b?a:b;
总结:
1)唯一的三目运算符(条件运算符)可以用来获得两个数中最大或最小的那个数。形式上更加简洁。
2)条件表达式的本质就是if-else。冒号:后的值就是else语句。
举例1:条件运算符的嵌套:
c = a>b?2:a==b?1:0;
当a>b时,c = 2;
当a==b时,c = 1;
当a<b时,c=0;
if(a>b)
c = 2;
else if(a == b) //此处else相当于第一个冒号
c = 1;
else //此处else相当于第二个冒号
c = 0;
举例2-1:求3个数中最大的数
a,b,c三个数,求最大值
if(a>=b)//比较a和b,最大值赋给m
m = a;
else
m = b;
if(a>=c)//比较a和c,最大值赋给n
n = a;
else
n = c;
if(m>=n)//比较m和n,获得最大值
max = m;
else
max = n;
等价于以下条件表达式:
m = a>=b?a:b;
n = a>=c?a:c;
max = m>=n?m:n;
又可以写成
举例2-2:求3个数中最大的数
if(a>=b)//比较a和b,最大值赋给m
m = a;
else
m = b;
if(a>=c)//比较a和c,最大值赋给n
n = a;
else
n = c;
if(b>=c)//比较b和c,获得最大值
max = m;
else
max = n;
等价于条件表达式
max = b>=c?a>=b?a:b:a>=c?a:c;
//max = b>=c?(a>=b?a:b):(a>=c?a:c);
分析:显示2-2方法更简洁,思路分析:
a与b比较:m为二者最大值;
a与c比较:n为二者最大值;
b与c比较:若b>=c,则m为最大值(如m=a,则a>=b>=c;如m=b,则b>=a,且b>=c);
若b<c,则n为最大值(如n=a,则,b<c,c<=a,即b<c<=a;如n=c,则a<c且b<c)。示意图如下:
其实,2-2的程序写成如下更贴切:
if(b>=c) //以任意两值比较,
{
if(a>=b) //第3个值与最大值b进行比较 //if-else对应第一个括号的内容,即冒
max = a; //号前的内容
else
max = b;
}else{ //b<c的情况
if(a>=c) //第3个值与最大值c进行比较//if-else对应第二个括号中的内容,即
max = a; //冒号后的内容
else
max = c;
}
总结:三目表达式?:的理解
?前的内容是if中的内容;
:代表else
:前的内容是if语句;
:后的内容是else语句。